home *** CD-ROM | disk | FTP | other *** search
/ Softwarová Záchrana 3 / Softwarova-zachrana-3.bin / Xteq X-Setup / xqdcXSP-Setup-EN.exe / {app} / plugins / XQ WinXP Start Menu 7.xpl < prev    next >
Text File  |  2004-01-30  |  8KB  |  278 lines

  1. "FILE"="Xteq Systems X-Setup Plugin 5.0"
  2. "TYPE"="9"
  3. "COUNT"="1"
  4. "UIPATH"="Appearance\Start Menu\Windows XP\Classic Start Menu"
  5. "NAME"="Visible Items in Start->Find"
  6. "LANGUAGE"="VBScript"
  7. "VERSION"="3.10"
  8. "OSVERSION"="0000011"
  9. "TEXT 1"="dⁿdel dumm"
  10. "DESCRIPTION 1"="This plug-in lets you control which options are shown on the Find menus on the Start Menu and in Windows Explorer. These icons are all part of Windows or Internet Explorer."
  11. "DESCRIPTION 2"="To show an option on the menu, enable it, otherwise disabling the option will hide it."
  12. "DESCRIPTION 3"="Please note that this list maybe shows activated entires than are not visibile in the find menu. These are entries that perform a validation if it's usefull to show them or not. For example, the "Search for Computers..." will only be visible if you are connected to a network. If you are using a stand-alone machine, it will hide itself automatically."
  13. "DESCRIPTION 4"="Important #1: If 'Files or Folders' is hidden, 'Computer' will also be hidden!"
  14. "DESCRIPTION 5"="Important #2: Disabling all items will lead to an empty menu being displayed!"
  15. "DESCRIPTION 6"="Important #3: These changes apply to ALL users on this machine!"
  16. "COMMENT 1"="Bloody complicated plug-in!!!"
  17. "COMMENT 2"="Based on plug-in by Neil R. Turner (totalxs@hotmail.com)"
  18. "COMMENT 3"="Thanks to Little Dave [sirturque@bigfoot.com] for the bug notice!"
  19. "AUTHOR"="Xteq Systems"
  20. "CONTACTURL"="http://www.xteq.com/"
  21. "COPYRIGHT"="Copyright ⌐ Xteq Systems - All Rights Reserved"
  22.  
  23.  
  24. ' Where all of the Find keys are installed:
  25. sP1="HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\FindExtensions\Static\"
  26. sP2="HKLM\Software\Microsoft\Windows\CurrentVersion\explorer\FindExtensions\Static-\"
  27.  
  28. Dim iReg     'conatins how many are currently displayed in the UI
  29. Dim aryReg() 'contains all the registry keys
  30.  
  31. Sub Plugin_Initialize 
  32.  Call ReadRegistry
  33. End Sub
  34.  
  35. Sub ReadRegistry
  36.     'first, clear the UI
  37.     for l=1 to iReg
  38.         Call SetUIElement(l,"")
  39.     next 
  40.  
  41.  
  42.     '---------------------------------------
  43.     'read the active entries
  44.  
  45.     'read top level (Path\Path)
  46.     iItems=RegEnumPaths(sP1) 
  47.     dim aryTemp1
  48.     ReDim aryTemp1(iItems)
  49.  
  50.     For l=1 to iItems      
  51.         sItem=RegEnumElement(l)    
  52.         aryTemp1(l)=sP1 & sItem & "\"
  53.     next 
  54.  
  55.  
  56.     'now read the entires below
  57.     dim aryTemp2
  58.     ReDim aryTemp2(100) 'should be enough...
  59.     lSubItemCounter2=0
  60.  
  61.     for l=1 to iItems        
  62.         sPath=aryTemp1(l)
  63.         iSubItems=RegEnumPaths(sPath)
  64.         for i=1 to iSubItems
  65.             sItem=RegEnumElement(i)    
  66.             lSubItemCounter2=lSubItemCounter2+1 
  67.             aryTemp2(lSubItemCounter2)=sPath & sItem & "\"
  68.         next
  69.     next 
  70.  
  71.  
  72.     '---------------------------------------
  73.     'now read the deactivated items
  74.  
  75.  
  76.     'read top level (Path\Path)
  77.     iItems=RegEnumPaths(sP2) 
  78.     dim aryTemp3
  79.     ReDim aryTemp3(iItems)
  80.  
  81.     For l=1 to iItems      
  82.         sItem=RegEnumElement(l)    
  83.         aryTemp3(l)=sP2 & sItem & "\"
  84.     next 
  85.  
  86.  
  87.     'now read the entires below
  88.     dim aryTemp4
  89.     ReDim aryTemp4(100) 'should be enough...
  90.     lSubItemCounter4=0
  91.  
  92.     for l=1 to iItems        
  93.         sPath=aryTemp3(l)
  94.         iSubItems=RegEnumPaths(sPath)
  95.         for i=1 to iSubItems
  96.             sItem=RegEnumElement(i)    
  97.             lSubItemCounter4=lSubItemCounter4+1 
  98.             aryTemp4(lSubItemCounter4)=sPath & sItem & "\"
  99.         next
  100.     next 
  101.  
  102.  
  103.     '---------------------------------------
  104.     'okay, we now have two arrays (aryTemp2 and aryTemp4) that contain
  105.     'all the items that we need. We now simply need to create ONE array from those two
  106.  
  107.     iReg=lSubItemCounter2+lSubItemCounter4  
  108.     ReDim aryReg(iReg)
  109.     
  110.     for l=1 to lSubItemCounter2
  111.         aryReg(l)=aryTemp2(l)
  112.     next
  113.  
  114.     for i=1 to lSubItemCounter4
  115.         aryReg(lSubItemCounter2+i)=aryTemp4(i)
  116.     next 
  117.     
  118.    
  119.    '--------------------------------------- 
  120.    'finally, update the UI
  121.  
  122.    for l=1 to UBound(aryReg)
  123.        sItem=aryReg(l)
  124.  
  125.        sName=RegReadValue(sItem & "@")
  126.        if len(sName)=0 then
  127.           sName="<UNKNOWN>"
  128.        end if
  129.  
  130.        'remove stupid "&" char
  131.        sName=replace(sName,"&","")
  132.           
  133.        bActivated=0
  134.        if InStr(sItem,sP2)>0 then
  135.           bActivated=false
  136.        else
  137.           bActivated=true
  138.        end if
  139.  
  140.  
  141.        Call SetUIElement(l,sName)
  142.        Call SetUIElementEx(l,bActivated)
  143.    next
  144.    
  145. End Sub
  146.  
  147.  
  148.  
  149.  
  150. Sub Plugin_Apply(ElementIndex,ElementSubIndex)
  151.     bChanges=false
  152.  
  153.     for l=1 to UBound(aryReg)
  154.         sItem=aryReg(l)
  155.         bUI=GetUIElementEx(l)   
  156.   
  157.         if InStr(sItem,sP2)>0 then
  158.            bReg=false
  159.         else
  160.            bReg=true
  161.        end if
  162.  
  163.        'now check for differences between bReg and bUI
  164.        if bUI=true and bReg=true then
  165.            'do nothing, both activated
  166.         else
  167.            if bUI=false and bReg=false then
  168.               'do nothing, both deactivated
  169.            else
  170.  
  171.               if bUI=true and bReg=false then 
  172.                  'in UI activated, in REG Deactivated ->
  173.                  'move from <Static-> to <Static>
  174.                  sOldPath=sItem
  175.                  sNewPath=Replace(sOldPath,sP2,sP1) 
  176.               else                
  177.                  'in UI deactivated, in REG activated ->
  178.                  'move from <Static> to <Static->
  179.                  sOldPath=sItem
  180.                  sNewPath=Replace(sOldPath,sP1,sP2) 
  181.               end if  
  182.  
  183.               'DebugMsg sOldPath & " ** " & sNewPath
  184.  
  185.               'execute move action
  186.               Call MoveFolder(sOldPath,sNewPath)
  187.  
  188.               'set flag
  189.               bChanges=true
  190.            end if
  191.         end if
  192.  
  193.     next 
  194.  
  195.  
  196.     if bChanges=true then
  197.        Call ReadRegistry
  198.  
  199.        'call the holy Windows API
  200.        Call IndicateSettingChange()
  201.  
  202.        'just to be sure...        
  203.        'Call Logoff
  204.     end if
  205. End Sub
  206.  
  207.  
  208.  
  209. Sub MoveFolder(CurrentFolder,NewFolder)
  210.  if right(CurrentFolder,1)<>"\" then
  211.     CurrentFolder=CurrentFolder & "\"
  212.  end if
  213.  
  214.  if right(NewFolder,1)<>"\" then
  215.     NewFolder=NewFolder & "\"
  216.  end if
  217.  
  218.  'check for any existing subfolder
  219.  iC=RegEnumPaths(CurrentFolder)
  220.  
  221.  if iC>0 then        
  222.     Dim aryTemp()
  223.     ReDim aryTemp(iC)
  224.  
  225.     for i=1 to iC 
  226.         aryTemp(i)=RegEnumElement(i) & "\"
  227.     next
  228.  
  229.     for i=1 to iC
  230.         sP_Old=CurrentFolder & aryTemp(i)
  231.         sP_New=NewFolder & aryTemp(i)
  232.  
  233.         Call MoveFolder(sP_Old,sP_New)
  234.     next 
  235.  end if
  236.  
  237.  Call MoveValues(CurrentFolder,NewFolder)        
  238.  Call RegDeletePath(CurrentFolder)      
  239. End Sub
  240.  
  241.  
  242. Sub MoveValues(OldFolder,NewFolder)
  243.  
  244.  'check for "NORMAL" Values
  245.  iC=RegEnumValues(OldFolder)
  246.  for i=1 to iC
  247.      x_Name=RegEnumElement(i)
  248.      x_Type=RegValueType(OldFolder & x_Name)
  249.      x_Value=RegReadValue(OldFolder & x_Name)
  250.  
  251.      'move to new location
  252.      Call RegWriteValue(NewFolder & x_Name,x_Value,x_Type)
  253.  
  254.      'delete old value
  255.      Call RegDeleteValue(OldFolder & x_Name)
  256.  next 
  257.  
  258.  
  259.  'check for @ Value
  260.  x_Name="@"
  261.  if len(RegReadValue(OldFolder & x_Name))>0 then
  262.     x_Type=RegValueType(OldFolder & x_name)
  263.     x_Value=RegReadValue(OldFolder & x_Name)
  264.  
  265.     'move to new location
  266.     Call RegWriteValue(NewFolder & x_Name,x_Value,x_Type)
  267.  
  268.     'delete old value
  269.     Call RegDeleteValue(OldFolder & x_Name)
  270.  end if
  271.  
  272. End Sub
  273.  
  274.  
  275.  
  276. Sub Plugin_Terminate 
  277. End Sub
  278.